

netstat = """
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      61302/python3       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1122/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1411/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1122/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1411/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           701/chronyd         
udp        0      0 0.0.0.0:68              0.0.0.0:*                           870/dhclient        
udp6       0      0 ::1:323                 :::*                                701/chronyd    
"""


"""
netstat_split = netstat.split('\n')         # 利用\n来分割
netstat_result = netstat_split[3:-1]        # 去除前面3行

print(netstat_result)

for x in netstat_result:
    y = x.split()                         # 逐行复制给x
    # print(y[3].split(':')[-1])            # 利用空白分割,第三位是IP和端口号，利用:来分割，取右边的端口号
    if y[3].split(':')[-1] == '80':       # 如果端口号为22
        print('http 80 open')
        break;
"""


import os
import time

while True:
    netstat = os.popen('netstat -tulnp').read()   # 调用系统参数，执行netstat -tulnp命令
    # print(netstat)                                # 看看执行出来的结果
    netstat_split = netstat.split('\n')             # 利用\n来分割
    netstat_result = netstat_split[2:-1]            # 去除前面2行,除去3行应该写2，这里翻了个大错!!!
    print(netstat_result)

    for x in netstat_result:
        y = x.split()                               # 逐行复制给y
        # print(y[3].split(':')[-1])                # 利用空白分割,第三位是IP和端口号，利用:来分割，取右边的端口号
        if y[3].split(':')[-1] == '80':
            print('http 80 open')
            break               # 结束当前的for循环，break跳出，不会执行else
    else:                       # 这个是for循环的else，不是while的else，打完当前的内容之后
        print('wait 1s')        # 等待1s
        time.sleep(1)
        continue                # 再次开始顶层循环，break用来结束上层的for，这里continue用来继续while
    break                       # for循环找到东西，不执行else，跳出来到这里的break，结束while True循环

"""
while True:
    xxxxx
    for x in y:
        xxx
        if xxxx:
            break
    else:
        xxxx
        continue
    break
这是一个结构，持续的等待某个事情的发生，一旦发生利用break先跳出for循环，在利用外层break再次跳出while循环，
如果for循环正常结束，就会执行else语句，else利用continue继续执行while循环。
"""